package persistencia.dao;

import java.util.List;

import org.hibernate.Query;

import persistencia.hbt.HibernateUtil;
import bean.Cliente;
import bean.EntidadPersistente;
import bean.SolicitudCotizacion;

@SuppressWarnings("unchecked")
public class SolicitudCotizacionDAO extends EntidadPersistenteDAO {
	private static SolicitudCotizacionDAO instancia = null;
	
	public static SolicitudCotizacionDAO getInstancia(){
		if(instancia == null)
			instancia = new SolicitudCotizacionDAO();
		
		if (session == null)
			session = HibernateUtil.getSession();
		
		return instancia;
	}
	
	public SolicitudCotizacion buscar(EntidadPersistente entidad)
	{
		SolicitudCotizacion solicitud = (SolicitudCotizacion) entidad;
		
		if (solicitud.getId() != null)
			return (SolicitudCotizacion) super.buscar(solicitud);
		else if (solicitud.getNumeroSolicitud() != null && solicitud.getCliente() != null)
			return this.buscar(solicitud.getNumeroSolicitud(), solicitud.getCliente());
		
		return null;
	}
	
	public List<SolicitudCotizacion> buscarSolicitudesPendientes()
	{
		Query query = session.createQuery("from SolicitudCotizacion s where s.cotizada = false");
		return query.list();
	}
	
	private SolicitudCotizacion buscar(Integer nroSolicitud, Cliente cliente){
		Query query = session.createQuery("from SolicitudCotizacion s where s.numeroSolicitud = :num and s.cliente = :cli");
		query.setInteger("num", nroSolicitud);
		query.setEntity("cli", cliente);
		SolicitudCotizacion solicitud = (SolicitudCotizacion) query.setFirstResult(0).setMaxResults(1).uniqueResult();

		return solicitud;
	}
}
